import wx from 'weixin-js-sdk'
import { getUa } from "utils/utils";
import { getJsApiInfo } from '../api/common/weixin.js'

/**
 * 私有方法，用于获取签名数据
 * 微信config，每次使用JDK方法时都要config一下
 */
function _jsApiInfo(url) {
	return new Promise((resolve, reject) => {
		// 判断当前浏览器环境
		if(!getUa().isWeixin) {
			return reject()
		}
		getJsApiInfo({url}).then(res => {
			if(res.status == 1) {
				wx.config({
					debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过log打出，仅在pc端时才会打印。
					appId: res.result.appId, // 必填，公众号的唯一标识
					timestamp: res.result.timestamp, // 必填，生成签名的时间戳
					nonceStr: res.result.nonceStr, // 必填，生成签名的随机串
					signature: res.result.signature,// 必填，签名
					jsApiList: ['updateAppMessageShareData','updateTimelineShareData'] // 必填，需要使用的JS接口列表
				})
				return resolve()
			}
		})
	})
}

// 暴露出去的函数加在 weChat 对象，每次使用JDK的接口最好都封装
const weChat = {
	/**
	 * “分享给朋友”及“分享到QQ”按钮的分享内容
	 *
	 * 因为路由模式原因，配置分享每次都要 wx.config()
	 * 
	 * @param {Object} options 配置参数 title, desc, link, imgUrl
	 *  link要和当前页面链接一致,目前link不传则拿当前页面的链接
	 * 	this.$weChat({
	 *		title: '标题',
	 *		desc: '描述',
	 *		link: '分享链接',
	 *		imgUrl: '图片url'
	 *	})
	 * 	
	 */
	share(options = {}) {
		if(!options.link) {
			options.link = location.href
		}
		// #号不能传过去
		options.link = options.link.split('#')[0]
		// 先使用 JsApiInfo 私有方法 获取签名数据 config
		_jsApiInfo(options.link).then(() => {
			wx.ready(function() {
				wx.updateAppMessageShareData({ 
				    title: options.title, // 分享标题
				    desc: options.desc || '', // 分享描述
				    link: options.link, // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
				    imgUrl: options.imgUrl, // 分享图标
				    success: function () {
				      // 设置成功
				    }
				})
				wx.updateTimelineShareData({ 
				    title: options.title, // 分享标题
				    link: options.link, // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
				    imgUrl: options.imgUrl, // 分享图标
				    success: function () {
				      // 设置成功
				    }
				})
			})
		}).catch(() =>{})
		
	}
}

// 暴露出去的对象
export default weChat